Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] Pisanie pluginów - teleportacja i zabieranie z eq itemów.


Rekomendowane odpowiedzi

Opublikowano

Witam.

 

Piszę plugina na spawna.

 

01. Jak ustawić spawna? Chodzi mi jakimi poleceniami zapisać w pliku konfiguracyjnym koordynaty gracza, który wydał jakieś polecenie.

02. Jak teleportować kogoś na koordynaty podane powyżej (próbowałęm na wiele sposobów i nie działa)?

03. Jak zabrać jakiś item w jakiejś ilości z eq gracza (eq.removeItem nie działa => nie usuwa)?

 

 

W przypadku teleportacji chodzi mi też o teleportacje między światami, ale do tego może zostać użyty plugin MultiverseCore.

 

 

Proszę o szybką odpowiedź.

 

 

Z góry dzięki.

DEVWEBTEL

"Los nagradza przygotowanych"

 

(Liberator 2)

Opublikowano

 cos w stylu bukkit.getworld.setspawnlocation

a pozniej tam jakas lokacje w ktorej pobierasz kordy czegos tam i zapisujesz do konfigu 

wgl pokaz kod ktorym chciales cos zrobic

Opublikowano

@topic

Jak chcesz zwyczajnego spawna ustawić to robisz;

 

Zmienna Player np, p

 

Location l = p.getLocation();
int x = l.getBlockX();
int y = l.getBlockY();
int z = l.getBlockZ();
p.getWorld().setSpawnLocation(x, y, z);
 
^^ Nie testowałem ^^
 
2.
 
Robisz zmienna IteMStack np;
 
ItemStack is = new ItemStack(Material.COBBLESTONE, 1);
 
if(p.getInventory().contanis(is)) {
 
  p.getInventory.remove(is);
}else{
  sender.sendMessage(ChatColor.RED + "Nie posiadasz jednego bruku!");
  return true;
 
 
 
// Nic z tego nie było testowane więc mogą być błedy!

N0thing! :: = ;; :.>

Opublikowano

albo tak jak up to zrobil 

 Player player = (Player)sender;
     Location location = player.getLocation();
     player.getWorld().setSpawnLocation(location.getBlockX(), location.getBlockY(), location.getBlockZ());
do tego Config.getConfig("config").set(args[0], "Spawn"+location.getBlockX() + location.getBlockY() + location.getBlockZ());
tez nie testowalem
Opublikowano

Witam.

 

Piszę plugina na spawna.

 

01. Jak ustawić spawna? Chodzi mi jakimi poleceniami zapisać w pliku konfiguracyjnym koordynaty gracza, który wydał jakieś polecenie.

02. Jak teleportować kogoś na koordynaty podane powyżej (próbowałęm na wiele sposobów i nie działa)?

03. Jak zabrać jakiś item w jakiejś ilości z eq gracza (eq.removeItem nie działa => nie usuwa)?

 

 

W przypadku teleportacji chodzi mi też o teleportacje między światami, ale do tego może zostać użyty plugin MultiverseCore.

 

 

Proszę o szybką odpowiedź.

 

 

Z góry dzięki.

DEVWEBTEL

 

1. No proste. Możesz to zapisać w bradzo łatwo w formacie YAML ponieważ Bukkit posiada klasę FileConfiguration.

File file = new File("plugins/TwójPlugin/spawn.yml");
FileConfiguration config = YamlConfiguration.loadConfiguration(file);
Location l = pobierasz gracza.getLocation();
config.set("spawn", Arrays.asList(l.getWorld().getName(), l.getBlockX(), l.getBlockY(), getBlockZ())); // zapis do configu
try {
    configration.save(file); // NIE ZAPOMNIJ!!
} catch(IOException ex) {
    ex.printStackTrace(); // mozna dac jakies info zamiast stacktrace itd :P
}

No to zapis :P Wyjdzie takie coś: 

spawn: ['swiat', 4, 65, -545]

2.

File file = new File("plugins/TwójPlugin/spawn.yml");
FileConfiguration config = YamlConfigration.loadConfiguration(file);
List<Object> spawn = config.getList("spawn");
String world = (String) spawn.get(0);
int x = (Integer) spawn.get(1);
int y = (Integer) spawn.get(2);
int z = (Integer) spawn.get(3);
twój gracz.teleport(new Location(Bukkit.getWorld(world), x, y, z));

3.

twój gracz.getInventory().remove(new ItemStack(Material.TWOJ_MATERIAL, twoja ilosc));

B)

Dlaczego MPC popiera piractwo Minecrafta...

 

Do moderatora: Po co Ty to usuwasz??

Opublikowano

1. No proste. Możesz to zapisać w bradzo łatwo w formacie YAML ponieważ Bukkit posiada klasę FileConfiguration.

File file = new File("plugins/TwójPlugin/spawn.yml");
FileConfiguration config = YamlConfiguration.loadConfiguration(file);
Location l = pobierasz gracza.getLocation();
config.set("spawn", Arrays.asList(l.getWorld().getName(), l.getBlockX(), l.getBlockY(), getBlockZ())); // zapis do configu
try {
    configration.save(file); // NIE ZAPOMNIJ!!
} catch(IOException ex) {
    ex.printStackTrace(); // mozna dac jakies info zamiast stacktrace itd :P
}

No to zapis :P Wyjdzie takie coś: 

spawn: ['swiat', 4, 65, -545]

2.

File file = new File("plugins/TwójPlugin/spawn.yml");
FileConfiguration config = YamlConfigration.loadConfiguration(file);
List<Object> spawn = config.getList("spawn");
String world = (String) spawn.get(0);
int x = (Integer) spawn.get(1);
int y = (Integer) spawn.get(2);
int z = (Integer) spawn.get(3);
twój gracz.teleport(new Location(Bukkit.getWorld(world), x, y, z));

3.

twój gracz.getInventory().remove(new ItemStack(Material.TWOJ_MATERIAL, twoja ilosc));

B)

Tak tylko dodam że główna klasa pluginu (rozszerzająca JavaPlugin) ma dostęp do metody getDataFolder/File czy jakoś pdobnie, który od razu przenosi do plugins/TwójPlugin/

Do tego nie uzywamy "/" w ścieżkach bo może nie zaskoczyć na innym systemie, mamy 2 opcje: (+ miliardy innych, ale to takie najprostsze :P)

(przedstawię to samo co w tamtym kodzie)

new File(new File(new File("plugins"), "twójPlugin"), "spawn.yml");
new File("plguins"+File.pathSeparator+"twójPlugin"+File.pathSeparator+"spawn.yml")

Tak dla uzupełnienia :D to da nam pewność że zaskoczy na każdym systemie :>

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Opublikowano

Najbardziej pomógł użytkownik @TheMolkaPL, gdyż przy okazji rozwiązał, mój inny problem o który chciałem się zapytać za jakiś czas :).

 

@SloowPL też mi pomógł.

 

Dzięki.

Już wiem co robiłem źle.

 

To był mój błąd (przy teleportacji):

Location loc = null;

Dzięki wam za pomoc.

Dałem like tym co mi pomogli, a jako najlepszą odpowiedź wybieram post użytkownika @TheMolkaPL.

 

Temat do zamknięcia.

 

A tak PS: Nie musiałeś pisać jak się zaposuje plik config, gdyż to umiem, ale dzięki za pomoc, może innym się przyda. ==> Do @TheMolkaPL.

 

A tak poza tym. Pomyliłeś się. Powinno być: l.getBlockZ() zamiast getBlockZ().

"Los nagradza przygotowanych"

 

(Liberator 2)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...